package com.itheima.d2_simpledateformat;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

//目标：掌握SimpleDateFormat的常用API的使用
public class Demo01 {
    public static void main(String[] args) throws ParseException {
        /**
         * 作用：可以对时间日期进行格式化和解析。格式化（Date ——> String），解析（String ——> Date）
         */

        //需求1：获取系统当前时间的Date对象，使用SimpleDateFormat将其解析成String
        //1.创建SimpleDateFormat对象，利用空参构造（具备默认格式）
        SimpleDateFormat sdf = new SimpleDateFormat();

        //2.获取系统当前时间的Date对象
        Date nowDate = new Date();
        System.out.println("格式化前：" + nowDate);

        //3.调用SimpleDateFormat的format方法进行格式化
        String nowStr = sdf.format(nowDate);
        System.out.println("格式化后：" + nowStr); //默认格式：年/月/日 上午或下午小时:分钟

        //需求2：将字符串 "1970/01/01 上午08:00" 转成Date对象
        //注意：给定的字符串格式，需要和SimpleDateFormat的默认格式保持一致！
        String str = "1970/01/01 上午08:00";
        //String str = "1970年01月01日 上午08:00";

        //4.parse方法会有编译时异常（后面学习），主要是做强烈提醒，小心这个代码很有可能出现问题
        //可以解决：alt + 回车 ，选择 add exception...
        Date date = sdf.parse(str);
        //如果给的字符串格式和SimpleDateFormat默认格式不一致，代码报错：ParseException（解析异常）
        System.out.println("解析后：" + date);

        //需求3：将系统当前时间用指定的字符串格式展示，格式为"2023年12月31日 09:54:20"
        //年：y，月：M，日：d，时：H，分：m，秒：s
        //5.重新创建SimpleDateFormat对象，指定格式字符串（技巧：复制、粘贴、改）
        sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String newNowStr = sdf.format(nowDate);
        System.out.println("指定格式字符串格式化后：" + newNowStr);

        //6.试试解析功能
        str = "2008年12月11日 10:11:12";
        Date newDate = sdf.parse(str);
        System.out.println("指定格式字符串解析后：" + newDate);
    }
}
